package com.itheima.tlias84.config;

import com.itheima.tlias84.interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * spring配置类：一般用来配置拦截器，跨域配置等等配置
 * @Configuration 是配置类的特化注解 组合了@Component
 *
 * 过滤器（Filter） 与拦截器（Interceptor）的区别：
 * 相同点 : 执行都在controller（servlet）之前
 * 不同点：
 * 技术提供方：过滤器->servlet 拦截器-> spring
 * 执行顺序：先执行过滤器 后执行拦截器
 * 拦截粒度：过滤器拦截粒度粗 -> 编码转换，时间格式准换
 * 拦截器拦截粒度细 - > 登录认证比较多，登录认证，接口日志记录
 *
 *
 *
 * 如果继承这个WebMvcConfigurationSupport sprintboot会自己处理时间
 * 如果想使用自定义的时间格式 就去实现WebMvcConfigurer
 */
@Configuration
//public class WebMvcConfig extends WebMvcConfigurationSupport {
public class WebMvcConfig implements WebMvcConfigurer {

    @Resource
    LoginInterceptor loginInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor).
                //添加拦截路径
                addPathPatterns("/**").
                //排除拦截路径
                excludePathPatterns("/login","/yml");
    }
}
